package com.ruoyi.wifiauth.service;

import java.util.List;
import java.util.Map;

/**
 * WiFi认证监控服务接口
 * 
 * @author ruoyi
 */
public interface IWifiAuthMonitorService {
    
    /**
     * 获取认证概览统计
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计信息
     */
    Map<String, Object> getAuthOverview(String startDate, String endDate);
    
    /**
     * 获取认证趋势数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param deviceId 设备ID
     * @return 趋势数据
     */
    Map<String, Object> getAuthTrendData(String startDate, String endDate, String deviceId);
    
    /**
     * 获取认证成功率统计
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 成功率数据
     */
    Map<String, Object> getAuthSuccessRate(String startDate, String endDate);
    
    /**
     * 获取认证耗时分析
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 耗时分析数据
     */
    Map<String, Object> getAuthTimeAnalysis(String startDate, String endDate);
    
    /**
     * 获取认证失败原因分布
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 失败原因数据
     */
    Map<String, Object> getFailureReasonDistribution(String startDate, String endDate);
    
    /**
     * 获取设备认证排名
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param limit 排名数量
     * @return 设备排名数据
     */
    List<Map<String, Object>> getDeviceAuthRank(String startDate, String endDate, Integer limit);
    
    /**
     * 获取用户认证行为分析
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 用户行为数据
     */
    Map<String, Object> getUserBehaviorAnalysis(String startDate, String endDate);
    
    /**
     * 记录认证过程日志
     * 
     * @param sessionId 会话ID
     * @param deviceId 设备ID
     * @param openid 用户openid
     * @param authStatus 认证状态
     * @param authTime 认证耗时(ms)
     * @param failureReason 失败原因
     * @return 记录结果
     */
    int recordAuthProcess(String sessionId, String deviceId, String openid, Integer authStatus, Long authTime, String failureReason);
    
    /**
     * 获取实时认证状态
     * 
     * @return 实时状态数据
     */
    Map<String, Object> getRealTimeAuthStatus();
}